package com.jinkeen.xiaxie.network;


import org.jetbrains.annotations.NotNull;

import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;

public class TestObservable {

    //    创建被观察者 Observable 对象
    Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() {
        //create（）是rxjava最基本的创造事件序列的方法
//       此处传入OnSubscribe对象参数
//            当Observable被订阅时，Onsubscribe的call（）方法会被自动调用，即事件序列就会依照设定依次被触发
//            即观察者会依次调用对应事件的复写方法从而响应事件
//            从而实现被观察者调用了观察者的方法&由被观察者的事件传递，即观察者模式
        @Override
        public void subscribe(@NotNull ObservableEmitter<Integer> emitter) throws Exception {
//            在复写的subscribe（）定义需要发送的事件
//observableEmitter类对象产生事件并通知观察者
//            ObservableEmitter类：定义：时间发射器  作用：定义需要发送的事件&向观察者发送事件
            emitter.onNext(1);
            emitter.onNext(2);
            emitter.onNext(3);
            emitter.onComplete();

        }
    });


    //创建观察者Observer并定义响应事件的行为
/***
 * next  向观察者发送需要响应事件的信号 被观察者可以发送无限个next事件，观察者也可以接受无限个next事件
 * complete 事件队列完结事件 标志着被观察者不再发送普通事件（onNext） 当被观察者发送了一个complete事件后，被观察者在complelte事件后的事件还会发送
 *          ，但是观察者收到complete事件后不再接收任何事件，被观察者可以不发送complete事件
 * error    事件异常队列 标志事件处理过程中出现异常
 */
}
